package BD;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.JOptionPane;

/**
 *
 * @author CORE
 */
public class Funcionarios extends bd{
    private int id_funcionarios = 0;
    private String nome ="";
    private String cpf ="";
    private String rg ="";        
    private Date dt_nascimento;
    private String clt ="";
    private String cargo ="";
    private Date dt_admissao;
    private float salario;
    private String  mae ="";
    private utilsPim utl = new utilsPim();

    public int getId_funcionarios() {
        return id_funcionarios;
    }

    public void setId_funcionarios(int id_funcionarios) {
        this.id_funcionarios = id_funcionarios;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public String getClt() {
        return clt;
    }

    public void setClt(String clt) {
        this.clt = clt;
    }

    public Date getDt_nascimento() {
        return dt_nascimento;
    }

    public void setDt_nascimento(Date dt_nascimento) {
        this.dt_nascimento = dt_nascimento;
    }

    public Date getDt_admissao() {
        return dt_admissao;
    }

    public void setDt_admissao(Date dt_admissao) {
        this.dt_admissao = dt_admissao;
    }

    public float getSalario() {
        return salario;
    }

    public void setSalario(float salario) {
        this.salario = salario;
    }

    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    public String getMae() {
        return mae;
    }

    public void setMae(String mae) {
        this.mae = mae;
    }

    public String getSql() {
        return sql;
    }

    public void setSql(String sql) {
        this.sql = sql;
    }

    public Statement getStmt() {
        return stmt;
    }

    public void setStmt(Statement stmt) {
        this.stmt = stmt;
    }

    public ResultSet getRs() {
        return rs;
    }

    public void setRs(ResultSet rs) {
        this.rs = rs;
    }
   
    public boolean incluir() {
        try {
            if (!estaConectado()) 
                conecta();          
            stmt = getConexao().createStatement();          
            //id_funcionarios, nomer, dt_admissao, dt_nascimento, mae, cpf,rg, clt, salario, cargo
            sql ="INSERT INTO funcionarios VALUES ((select coalesce(max(id_funcionarios)+1,1) from funcionarios),"
                +"'"+ this.getNome()+" ',"
                +"'"+ utl.getDataStr(this.getDt_admissao())+" ', "
                +"'"+ utl.getDataStr(this.getDt_nascimento())+" ', "
                +"'"+ this.getMae()+" ', "
                +"'"+ this.getCpf()+" ', "
                +"'"+ this.getRg()+" ', "
                +"'"+ this.getClt()+" ', "
                +"'"+ Float.toString(this.getSalario())+" ', "                        
                +"'"+ this.getCargo()+ " ');";            
            stmt.executeUpdate(sql);
            stmt.close();
            return true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return false;
        }
    }

    public boolean alterar() {
        try {
            if (!estaConectado()) 
                conecta();          

            stmt = getConexao().createStatement();          
            sql = "UPDATE funcionarios "+
                  "SET nome='"+ this.getNome() + "', "+
                  "dt_admissao='"+utl.getDataStr(this.getDt_admissao(),"dd/MM/yyyy")+ "', "+
                  "dt_nascimento='"+utl.getDataStr(this.getDt_nascimento())+ "', "+
                  "mae='" + this.getMae()+ "' , "+
                  "cpf='" + this.getCpf()+ "' , "+
                  "rg='" + this.getRg()+ "'  ,"+
                  "clt='" + this.getClt()+ "' , "+
                  "salario='" + this.getSalario()+ "' , "+
                  "cargo='" + this.getCargo()+ "'  "+
                  " where id_funcionarios='"+ Integer.toString(this.getId_funcionarios())+"';";
                   
            stmt.executeUpdate(sql);
            stmt.close();
            //System.out.print(this.sql);
            return true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return false;
        }

    }

    public ResultSet consultar() {
        if (!estaConectado()) {
            conecta();
        }
        try {
            stmt = getConexao().createStatement();
            sql = "SELECT * FROM funcionarios  WHERE 1=1 ";
            
            if (! this.nome.equals("") ){            
                sql = sql + " AND nome like '%"+ this.getNome() +"%'";          
            }
            stmt.executeQuery(sql);
            rs = stmt.executeQuery(sql);
            return rs;
            
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return null;
        }
        
    }

    public ArrayList<Funcionarios> getItens(){
        ArrayList itens = new ArrayList();
        rs = this.consultar();

        try{
            while(rs.next()){
                Funcionarios  obj = new Funcionarios();
                obj.setId_funcionarios(rs.getInt("Id_funcionarios"));
                obj.setNome(rs.getString("nome"));
                obj.setDt_admissao(rs.getDate("dt_admissao"));                
                obj.setDt_nascimento(rs.getDate("dt_nascimento"));                
                obj.setMae(rs.getString("mae"));               
                obj.setCpf(rs.getString("cpf"));               
                obj.setRg(rs.getString("rg"));               
                obj.setClt(rs.getString("clt"));               
                obj.setSalario(rs.getFloat("salario"));               
                obj.setCargo(rs.getString("cargo"));                     
                itens.add(obj);                
            }
            stmt.close();
            disconecta();
        }
        catch(SQLException objerro){
            msgErro = objerro.getMessage();        
            JOptionPane.showMessageDialog(null, "Não foi possível executar a lista de funcionarios" + objerro.getMessage());
            
        }        
        return itens;
    }
    public boolean excluir() {
        if (!estaConectado()) {
            conecta();
        }        
        try {
            stmt = getConexao().createStatement();                      
            sql ="DELETE FROM funcionarios "+                  
                 "WHERE id_funcionarios = "+ Integer.toString(this.id_funcionarios);            
            stmt.execute(sql);            
            return true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível  a Query \n" + objErro.getMessage());
            return false;
        }
    }
}